package thread;

public class Test6_isInterrupted {
    public static void main(String[] args) {
        //当前线程
        Thread thread = Thread.currentThread();
        //检测当前线程是否被中断
        System.out.println(thread.getName()+"线程是否被中断："+thread.isInterrupted());

        //TODO:测试这句话设置线程中断标识
        thread.interrupt();//发出一个中断信号
        //检测当前线程是否被中断
        System.out.println(thread.getName()+"线程是否中断："+thread.isInterrupted());
        //检测线程中断状态是否被清除
        System.out.println(thread.getName()+"线程是否中断："+thread.isInterrupted());

        try {
            //线程休眠2s
            Thread.sleep(2000);//本来在main线程中睡眠2s，但因为interrupt被调用，所以sleep被打断
            System.out.println(thread.getName()+"线程休眠未被打断。。。");
        }catch (Exception e){ //异常捕获操作也会恢复中断状态
            //捕获到sleep被打断异常
            e.printStackTrace();
            System.out.println(thread.getName()+"线程休眠被打断。。。");
            //判断线程是否被中断，因为异常已经处理，所以状态恢复   扩展：在catch写处理代码
            System.out.println(thread.getName()+"线程是否被中断："+thread.isInterrupted());
        }
        System.out.println(thread.getName()+"线程是否被中断："+thread.isInterrupted());
    }
}
